118666 - 성격 유형 검사하기
info
- 문제 보기: 118666 - 성격 유형 검사하기
- 소요 시간: 20분 5초
- 풀이 언어:
java
- 체감 난이도: 1️⃣~2️⃣
- 리뷰 횟수: ✅
풀이 키워드
스포주의
해시
풀이 코드
info
- 메모리: 96600 KB
- 시간: 12 ms
import java.util.*;
class Solution {
public String solution(String[] survey, int[] choices) {
Map<String, Integer> typeMap = new HashMap<>();
String types = "RTCFJMAN";
for (char ch : types.toCharArray())
typeMap.put(String.valueOf(ch), 0);
// calc score
for (int i = 0; i < survey.length; ++i) {
switch (choices[i]) {
case 1: typeMap.merge("" + survey[i].charAt(0), 3, Integer::sum); break;
case 2: typeMap.merge("" + survey[i].charAt(0), 2, Integer::sum); break;
case 3: typeMap.merge("" + survey[i].charAt(0), 1, Integer::sum); break;
case 4: break;
case 5: typeMap.merge("" + survey[i].charAt(1), 1, Integer::sum); break;
case 6: typeMap.merge("" + survey[i].charAt(1), 2, Integer::sum); break;
case 7: typeMap.merge("" + survey[i].charAt(1), 3, Integer::sum); break;
}
}
// get type
String ans = "";
ans += (typeMap.get("R") < typeMap.get("T")) ? "T" : "R";
ans += (typeMap.get("C") < typeMap.get("F")) ? "F" : "C";
ans += (typeMap.get("J") < typeMap.get("M")) ? "M" : "J";
ans += (typeMap.get("A") < typeMap.get("N")) ? "N" : "A";
return ans;
}
}
풀이 해설
해시맵으로 점수 합산하고 하드코딩 처리했다... 끝.
메모
- 카카오 문제 치고 많이 쉬움.
3년만 더 일찍 태어날걸 get
put
merge
다 쓰여서 자바 해싱 까먹었을때 복습하기에 나쁘지 않음String.valueOf(ch)
<- 이거 생각 안나면 그냥 concat 쓰셈